// 路由鉴权
import router from '@/router';
import nprogress from 'nprogress';
import 'nprogress/nprogress.css';
import pinia from './store';

nprogress.configure({ showSpinner: false });
const user = useUserStore(pinia);

//全局守卫：项目中任意路由的切换，都会触发
//全局前置守卫
router.beforeEach(async (to: any, from: any, next: any) => {
  // to: 你将要访问那个路由
  // from: 你从那个路由来
  // next: 路由的放行函数

  document.title = `${setting.title} - ${to.meta.title}`;

  // 有token信息
  if (user.token) {
    // 访问login
    if (to.path === '/login') {
      next({ path: '/' });
    } else {
      // 有用户信息
      if (user.username) {
        next();
      } else {
        try {
          // 已经登录，没有用户信息
          await user.userInfo();
          next();
        } catch (error) {
          // 已经登录，但是token过期或者本地存储被修改
          // 退出登录
          await user.userLogout();
          next({ path: '/login', query: { redirect: to.path } });
        }
      }
    }
  } else {
    // 没有token信息
    // 访问login
    if (to.path === '/login') {
      next();
    } else {
      // 没有token信息，访问其他页面
      next({ path: '/login', query: { redirect: to.path } });
    }
  }
  nprogress.start(); // 进度条开始
});

//全局后置守卫
router.afterEach((to: any, from: any) => {
  nprogress.done(); // 进度条结束
});

// 用户未登录：重定向到login
// 用户登录后：不可以访问login
